#ifndef __CustomObject_h_
#define __CustomObject_h_

#include "Item.h"
#include "MovableItem.h"

class CustomObject : public Item, public MovableItem, public Ogre::FrameListener
{

	friend class GameManager;

	// Attributes ------------------------------------------------------------------------------
protected:
	static int ID;
	static const char* DEFAULT_NAME;

public:
	static const char* DEFAULT_NODE_NAME;

	// Methods ---------------------------------------------------------------------------------
protected:
	CustomObject(Ogre::Entity*);
	virtual ~CustomObject();
	void initialize();

public:
	virtual void collision(Item* _item);
	virtual void collisionWithBullet(Bullet* _bullet);
	virtual void collisionWithEnemy(Enemy* _enemy);
	virtual void collisionWithMainCharacter(MainCharacter* _mainCharacter);
	virtual void collisionWithFish(Fish* _fish);
	virtual void collisionWithBonus(Bonus* _bonus);
	virtual void collisionWithWeapon(Weapon* weapon);
	virtual bool frameStarted(const Ogre::FrameEvent& evt);
	bool move(void);
	void reset();

};

#endif